#ifndef DDAS_CLIENT_RESULT_DATA_HPP
#define DDAS_CLIENT_RESULT_DATA_HPP

#include "Coefficients.hpp"

///This class exists to replace the DDAS_CLIENT_RESULT_DATA struct
class DDAS_Client_Result_Data
{

private:

        /// The binary representation of the definition number - serves to disambiguate endianess
        char**          bin_reps;

        /// The decimal representation of the combination of independent variables used in this regression (1011 base 2 == 11 base 10)
        char**          def_nums;

        /// The sum of squared error for the linear regression
        double*         SSEs;

        /// How many results are contained in the struct
        unsigned int   size;

        //regression coefficients
        Coefficients** coefficients;
	
        
public:

	//structors
	DDAS_Client_Result_Data();

	DDAS_Client_Result_Data(unsigned int result_count, unsigned int coeff_count);

	~DDAS_Client_Result_Data();


	//getters
	int getBinaryRepresentations(char*** bin_reps);

	char* getBinaryRepresentation(int index);

	int getDefinitionNumbers(char*** def_nums);

	char* getDefinitionNumber(int index);

	int getSSEs(double** SSEs);

	double getSSE(int index);

	int getCoefficients(Coefficients*** coeffs);

	int getRowCount();


	//setters
	int setBinaryRepresentations(char** bin_reps);

	int setBinaryRepresentation(char* bin_rep, int index);

	int setDefinitionNumbers(char** def_nums);

	int setDefinitionNumber(char* def_num, int index);

	int setSSEs(double* SSEs);

	int setSSE(double SSE, int index);

	int setCoefficients(Coefficients*** coeffs);

	int setRowCount(unsigned int size);
};

#endif
